Enterprise software systems are typically sophisticated, large-scale systems that support many, e.g., hundreds or thousands, of concurrent users. Examples of enterprise software systems include financial planning systems, budget planning systems, order management systems, inventory management systems, sales force management systems, business intelligent tools, enterprise reporting tools, project and resource management systems and other enterprise software systems.
Many enterprise performance management and business planning applications require a large population of users to enter data that the software then accumulates into higher level areas of responsibility in the organization. Typically, this data comprises multidimensional data where each element is stored as a tuple within the multi-dimensional data space, where the multidimensional tuple comprises a finite sequence of objects, each of a specified type. The system typically stores these multidimensional tuples within a B-tree or other tree data structure for efficient retrieval and maintenance.
Typically, the system stores the tuples to the B-tree or other data storage structure such that the tuples are sorted within the data structure based on one of the component objects of the multidimensional tuple. For example, multidimensional tuples may store objects having dimensions of types “Name,” “Store,” “Date,” and “Product.” In this example, multidimensional tuple may be referred to as quadruples as it comprises four objects. Moreover, the quadruples use the same unique reference for the “Name” for each multidimensional data element associated with a customer named “Fred,” and may assign the references based on an order in which multidimensional data elements are added to the system. The system may store the tuples in the B-tree or other data structure in a sorted order based on these references for each dimension and in accordance with an order in which the multidimensional data elements were added to the system. As a result, other quadruples associated with multidimensional data elements for the customer Fred tend to be stored within the same portion of the B-tree and in a sorted order.
While sorting according to the “Name” object in the above example may facilitate quick retrieval of the stored quadruples when searching for tuples matching a given “Name,” retrieval times of multidimensional tuples when searching along other dimensions, i.e., the “Store,” “Date,” or “Product” dimensions in the above example, may be considerably increased. In other words, retrieval times when searching along these dimensions may be sacrificed in view of the quick retrieval times when searching along the sorted object, i.e., the “Name” object. For example, searching the tuple storage structure along one of the other dimensions of the multidimensional tuple may require traversal of the entire storage structure in a linear manner. These inconsistencies impose unpredictable delays to locating tuples and subsequently retrieving multidimensional data and, therefore, may significantly affect the performance of enterprise applications that make use of the multidimensional data.